package com.yunke.vo.circle;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.List;

/**
 * 社交圈评论VO
 * 
 * @author yunke
 * @since 1.0.0
 */
@Data
@Schema(description = "社交圈评论信息")
public class YunkeCircleCommentVo {

    /**
     * 评论ID
     */
    @Schema(description = "评论ID")
    private Long id;

    /**
     * 动态ID
     */
    @Schema(description = "动态ID")
    private Long circleId;

    /**
     * 评论用户信息
     */
    @Schema(description = "评论用户信息")
    private UserInfo user;

    /**
     * 父评论ID
     */
    @Schema(description = "父评论ID")
    private Long parentId;

    /**
     * 被回复用户信息
     */
    @Schema(description = "被回复用户信息")
    private UserInfo replyUser;

    /**
     * 评论内容
     */
    @Schema(description = "评论内容")
    private String content;

    /**
     * 评论图片列表
     */
    @Schema(description = "评论图片列表")
    private List<String> images;

    /**
     * 点赞数
     */
    @Schema(description = "点赞数")
    private Integer likeCount;

    /**
     * 回复数
     */
    @Schema(description = "回复数")
    private Integer replyCount;

    /**
     * 当前用户是否已点赞
     */
    @Schema(description = "当前用户是否已点赞")
    private Boolean isLiked;

    /**
     * 评论时间
     */
    @Schema(description = "评论时间")
    private Long createTime;

    /**
     * 评论时间文本
     */
    @Schema(description = "评论时间文本")
    private String createTimeText;

    /**
     * 地理位置
     */
    @Schema(description = "地理位置")
    private String location;

    /**
     * 子评论列表
     */
    @Schema(description = "子评论列表")
    private List<YunkeCircleCommentVo> replies;

    /**
     * 用户信息内部类
     */
    @Data
    @Schema(description = "用户信息")
    public static class UserInfo {
        @Schema(description = "用户ID")
        private Long userId;

        @Schema(description = "用户昵称")
        private String nickname;

        @Schema(description = "用户头像")
        private String avatar;

        @Schema(description = "VIP等级")
        private Integer vipLevel;

        @Schema(description = "是否认证")
        private Boolean isAuth;
    }
} 